perm filename TEACH[UP,DOC]16 blob sn#209396 filedate 1976-04-06 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00019 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	To learn to use "E" type HELP ETEACH with a carriage return
C00006 00003	General remarks  (come back later if this seems confusing).
C00009 00004	PAGE changing commands. 
C00015 00005	How to EXIT and how to ENTER a file.
C00019 00006	WINDOW and ARROW moving cammands.
C00027 00007	EDITING.  Adding text at the end of a page.
C00031 00008	Simple line-editing commands.
C00036 00009	More editing commands.  Insertions and deletions.
C00041 00010	PAGING. Introducing and deleting PAGE MARKS.
C00046 00011	File switching commands.  αβ?  αβH  αβε and αβλ
C00055 00012	Line marking.
C00058 00013	ATTACH and COPY.
C00063 00014	FIND commands are string searching commands.
C00073 00015	Substitution commands.
C00076 00016	Margin control. JUST,JFILL and CENTER.
C00086 00017	Some other EXTEND commands.
C00092 00018	System commands to evoke E.
C00096 00019	Credits:
C00098 ENDMK
C⊗;
To learn to use "E" type HELP ETEACH with a carriage return
and follow instructions.   This will copy a file named TEACH into your
file area and allow you to read it and modify it for practice.

You are now looking at page 2 of this file (see top line with asterisks).
  Page 1, the "directory" page, is automatically prepared by E.

ABREVIATIONS used in TEACH to characterize commands.

   α     means hold the "CONTROL" key down while typing a character.
   β     means hold the "META" key down while typing a character.
   αβ    means hold both "CONTROL" and "META" keys down while typing.
   ⊗     means hold either the "CONTROL" key alone or both "CONTROL"
	   and "META" keys down while typing.

   <cr>    carriage RETURN key.			<lf>    LINE feed key.
   <tab>   TAB key.				<alt>   ALT-mode key.
   <bs>    Back-Space key.			<form>  FORM-feed key.
   <vt>    the VT key.				<clear>	the CLEAR key.
   CURRENT means the current line (normally with an → or ↔ on the left).

   Most commands are single characters typed with one or both of the two
special keys held down as specified by α, β or ⊗ as defined above.  When
a number is  shown in  a command,  this is by  way of  example, and  any
desired decimal number may be used.

   Typing ordinary  characters will cause  you to enter  the LINE-EDITOR
and can easily lead to the overwriting of desirable text, so be careful.
If you do make a mistake or get confused, type <alt> before you type a <cr>.

   !!    indicates an instruction to follow. (The first one comes now).

!! Type αP (pronounced CONTROL P) for PAGE 3.(hold CONTROL down and type P).
General remarks  (come back later if this seems confusing).

     E is  a  page  oriented editor  designed  for  use with  a  display
terminal. It brings one  page of the text into core,  as requested,  and
it displays a  portion of  this page  as if through  a window.   A  line
pointer and an  underscoring cursor mark the position in  the text where
editing  is to  occur.  Special  commands allow you  to go  from page to
page, to move  the window up or  down on the page  and to move the  line
pointer and cursor as desired.

    E does not make a separate disk copy of the file being edited unless
requested to do so by the use of a special command (described later), so
take care or you may damage a file, even one belonging to someone else.

    E achieves its speed
(1) by using the system  line editor and by only changing  the core copy
of the text on the completion of a line edit, and
(2) by updating the disk  copy of the page  only on the completion of  a
page edit (automatically  effected by moving to another page).

Always remember  that the text shown on the display may not, and usually
does not, mirror the true state of the actual text on the disk.

    E is best understood by recognizing that it operates in a variety of
different modes and  that many commands  are appropiate only  to certain
modes or, worse yet, that they may mean quite different things depending
upon the mode  that E  is in  at  the time  that the  command is  given.

   The dominant mode is  the NORMAL mode.  This allows  for page, window
and  line-marker movement  commands and  commands which enter  the other
modes.  You will first learn some normal-mode commands.

!! Type αP or αβP for the next page.  DO THIS NOW.
PAGE changing commands. 

   Most  page-changing commands  are single  characters  typed with  the
CONTROL key  held down or with  both the CONTROL and  the META keys held
down. They may take modifiers as shown below.

   ⊗P       Go to the next PAGE. (You have just done this).
   ⊗-⊗P     Back up to the previous page. !! Try this and then return.

   ⊗+⊗7⊗P   Go foreward 7 pages if possible, otherwise to the last page.
   ⊗-⊗3⊗P   Go backward 3 pages if possible otherwise to the first page.

   ⊗7⊗P     Go to page 7 if possible otherwise to the last page.

!!  If you are sure that you know these commands, skip around a bit and
come back here by typing ⊗4⊗P.  Note that the directory on page 1 lists
the first line of each page.

You are now looking at a longer page than before. Note two things:

1 The header line contains asterisks, the  page number and the file name.

2 A trailer line  contains dots, where formerly there  were asterisks,
along with some suplimentary information which will be explained later.

   The asterisks mean  that  you are seeing the  page  through  a window
starting at the top of the page, while the dots mean that there is yet
more on the page than that shown.

   But now you find that you are getting to the bottom of the window and
something will have to be done if you are to read further. This something
is to type <form> that is hit the key labeled "form".
!!  So type <form>.  Note that this command does not require control bits.

If somehow you failed to quite understand what happened, then type <vt>
that is hit the key labeled "vt" and you will go back a windowful.

!!  So do this now and then come back here.  Do this several times.

   When you tire of this you might note that  dots have now replaced the
asterisks  in the  header line.   Some  additional information  has also
appeared in this line, to wit, a record of the line number of  the first
line that now shows on the window.  At this time this number is 33.

   Now turn  your attention  to the  trailer line which  is now  seen to
contain  asterisks  indicating  that  we now  see  to  the  end  of this
particular page, which is still a rather short one.   The information on
this line, which you should now know about, tells you that  the arrow is
pointing to line 33 as it does and that there are 65 lines on this page,
further that you  are looking at page 4  and that there are 19  pages in
this file.   We will ignore  the rest of the of  the information for the
time being.

   By this  time, you will have  also observed  some rather  nonsensical
information below the trailer line which is, in fact a record of some of
the commands  that you  have been  typing and  some acknowledgements  of
these commands.  Form a practice of watching this information to be sure
that  your commands  are properly acknowledged  before you  type too far
ahead.  At the moment about the only thing to observe is that the <form>
and <vt> commands are echoed in a rather funny way.

   This page has been made rather short so that you can see what happens
under these conditions, so go to the next page to continue.

!!  So type ⊗P as you did earlier.
How to EXIT and how to ENTER a file.

   But maybe you have had enough for one session and would like to quit.
As mentioned earlier you have created a special file on your own area by
the name of TEACH  and you can re-enter this  file by typing the  system
command  ET TEACH  followed  by  the "return"  key.    Remember this  ET
TEACH<cr>.

   And now to quit, simply  type ⊗E , that is, type the  letter "E" with
either  the <control> key or  both <control> and  <meta> keys depressed.

!!  If you want to quit now do so, otherwise continue and come back here
when you are ready quit, to make sure you know how to resume.

   You will also want to know how to create a  new file.  If you want to
start a  new file say one named FOO, you  type to the system the command
CET FOO<cr>.  Having created such a file and having left it you  can, of
course reenter it by the command ET FOO<cr>.

   If you should get confused and try to create a new file with the same
name  as one that you already have, the editor will warn you of this and
allow you to either correct your mistake or, if you want, to replace the
old file by a newly created one.

The commands that you have learned are:  (Remember what ⊗ means)

⊗P	Go to the next page.		⊗-⊗P	Go back a page.
⊗+⊗3⊗p	Go forward 3 pages.			⊗-⊗3⊗P	Go back 3 pages.
⊗7⊗P	Go to page 7.

<form>	Go to the next windowful.	<vt>	Go back a windowful.

!! You need one of these right now!  (Note the dots below and choose.)

Other commands that you also know are:

⊗E	Terminate an editing session.

And the system commands:

CET BAZ		Create a new file "BAZ" (assuming you want such a file).
ET TEACH	RE-ENTER  the file named TEACH (which presumably you now have).

   Since this page was only slightly longer  than a windowful, you have
had the  opportunity of observing that the  command <form> only advances
the window enough to get  to the end of the  page.  If you try it  again
now you will also observe that it does not cross page boundaries.

!!  Type <form> several times and observe what happens to the arrow.

!!  Now try typing αβ<form> ( <form> with <control> and <meta> depressed).

WINDOW and ARROW moving cammands.

   But first, did you get here without reading all of the previous page?
!! To make sure type αβ<vt> to back up a windowful over the page boundary.

So two other useful commands are:

αβ<form>	Get a new windowful, crossing a page boundary if the old
		windowful is at the end of a page and if there is another
		page in the file.
αβ<vt>		Back up a windowful, crossing a page boundary if the old
		windowful is at the beginning of a page  and  if there is
		an earlier page in the file.

Now a new subject,- that of ARROW moving.

   If you have been observing the arrow to the left, you will have noted
that it  has usually, but not  always, pointed to the  first or the last
line on the  window.  This arrow  points to the  CURRENT line, i.e.  the
line that would be edited were you to enter the LINE-EDIT mode.

   While in the NORMAL mode, as we now are (or at least should be),  the
command <cr>, that is hitting the "return" key,  will cause the arrow to
move down a line and the command  <bs> will cause it to move up a  line.

   Both of these  commands can take  arguments which are  simply decimal
numbers  typed ahead  of  the command  itself, but  NOTE  CAREFULLY, the
arguments MUST  be typed with  control keys  depressed, preferably  with
both <control> and  <meta>, while the commands themselves,  that is, the
<return> or <bs> are typed without control keys.

The following commands can then be added to our list:

<cr>	Move the arrow down a line.	<bs>	Move the arrow up a line.
⊗4<cr>	Move the arrow down 4 lines.	⊗3<bs>	Move the arrow up 3 lines.

To these we can also add:

⊗>	The same as ⊗4<cr>.		⊗<	The same as ⊗4<bs>.
⊗2⊗>	Move the arrow down 8 lines.	⊗2⊗<	Move the arrow up 8 lines.

⊗≥	Move the arrow down half a windowful.
⊗≤	Move the arrow up half a windowful.

⊗∧	Move the arrow to the top of the window.
⊗∨	Move the arrow to the bottom of the window.

!!  It may be well to stop here and go through your repartee of commands.

   You will observe that  the arrow moving commands will  sometimes also
move  the window  should this  be  necessary to  prevent the  arrow from
leaving the  window.   When  this happens  the  window will  usually  be
positioned so that the arrow line will be at the middle of the window.

More window moving commands.

   Having moved the arrow to a line of interest you may wish to position
the window without moving the arrow with respect to the text.  There are
several commands designed for this purpose.  The more useful ones are:

⊗J	JUMP the window so that the arrow line will be at the top of the
	window.
⊗0⊗J	Jump the window  so that the arrow line will be in the middle of
	the window.
⊗-⊗J	Jump the window  so that the arrow line will be at the bottom of
	the window.

   Alternatively, you may want to see a few lines more at the top or the
bottom of  the window and you  would prefer that the  arrow not be moved
with respect to text but you are willing for this to happen if the arrow
would otherwise go off the screen.  The commands to do this are:

⊗T	Show 4 more lines at the top of the window.
⊗B	Show 4 more lines at the bottom of the window.

!!   Try these commands now.  You will observe their action is inhibited
when they are given near the page boundaries.

   When you start trying to actually edit a file  you will find that you
will need just about all of the commands that have been described.

Line numbers and their use.

   E is not primarily a line-number oriented  editor. However, there are
times  when it  is desirable  to get to  some specific  line on  a page,
perhaps you have tried to compile  a program and the compiler has  given
you a  list of  errors in  terms of the  pages and  lines on  which they
occur.

   Just as you can get to any page, say page 6, by typing ⊗6⊗P , you can
type ⊗2⊗9⊗L  to get to line 29 on the page.   The command ⊗L (without an
argument) gets you to line  1 and the command  ⊗∞⊗L will get you to  the
bottom row of asterisks at the end of the  page.  Relative arguments may
also be used with the L command.

   Note  that the P  command without an  argument implies  the next page
while the L command without an argument implies line 1.

The most useful line-number commands are:

⊗L	Go to line 1 on the page.  This is the fastest way to get to the
	start of the page.

⊗3⊗5⊗L	Go to line 35 on the page.

⊗∞⊗L	Go to one line beyond the end of the page.  The arrow will point
	to the row of asterisks.   This is the fastest way to get to the
	end of the page.

!!     Try skipping around by asking for specific  lines by number.  You
will observe that the arrow will simply move to the specified line if it
is on the window.   If a  shifting of the window  is required, then  the
window is  normally positioned  so that  the arrow line  will be  in the
middle of the window.

   You have already observed that the trailer line always tells the line
number of the CURRENT line i.e. the line to which the arrow is pointing.

EDITING.  Adding text at the end of a page.

   You enter the LINE-EDIT mode simply by starting to type.

   In other  words, typing a  character without a  CONTROL or  META key,
(almost  any character key  except for certain  non-printing keys, these
being <cr>,  <bs>, <form>, <vt>  and <alt>  and <line>),  typing such  a
character will cause  that character to appear in the  line to which the
arrow is  pointing at the time.  If you are in the NORMAL mode, when you
start to type, the typed character will overwrite the first character in
the line.   A cursor will  appear under the first  character in the line
and also  under that position  in which  the next  typed character  will
appear.    As  you  continue  to  type  additional  characters  will  be
overwritten.

   Remember- If you make a mistake or get  confused, the safest thing to
do  is to type  <alt> .  If you do this,  while in the  line editor, the
corrections that you have just made will go away.

   Perhaps the simplest thing to do is to add  text at the bottom of the
page.   This you  can do, 1)  by moving the  arrow to the  bottom row of
asterisks (which, of course, are not in the text  at all) and then 2) by
just typing.  (Do you remember  the fastest way to get to get to the end
of the page?)

   Incidentally, do  not try to  get to the  row of asterisks  by simply
typing a  lot of <cr>'s.   When the arrow is  pointing at the asterisks,
typing a <cr> will introduce a blank line in the text.  ⊗∞⊗L does not do
this  and neither does ⊗∞<cr> if given when the arrow is NOT pointing at
the asterisks.  It is always better  to use an argument with any command
that will accept one (and many do, besides those specifically mentioned)
than to type the command as many times as it is wanted.

!!  So do this now, limiting your typing to a few words without a <cr>.

   You will observe that the asterisks  disappear to be replaced by what
ever you type.

   !!  Now type a  <cr> which will terminate your line  of text allowing
the asterisks  to reappear below your new text.   If you look at the end
of the header line  you will observe  that the letter "W"  has appeared,
indicating  that something has been changed on the  page that is not yet
written out.

!!  Since you may not  want to  preserve for  posterity this, your first
attempt, move the cursor  back to your line and type  αβD.   Your  newly
typed line is gone beyond recall.  !! Now go to the next page for more.

Simple line-editing commands.

   The line-editor is actually  a part of the main  operating system and
when  you are  operating in  this mode  you are  typing directly  to the
system.  The line editor has a whole set of commands that you  will need
to learn.   In this  Teach manual we will  consider only that  subset of
commands that you will have to know almost at once.

   Certain keys and particularly most normal characters, when typed with
both the  <control>  and <meta>  keys  depressed are  called, activation
characters.   These activation characters  terminate the editing  of the
line and cause the resulting line to be returned to E.

The six almost essential line-editor commands that you will need to know
are:

α<space>   Move the cursor one character position to the right without
	   affecting the text.

α<bs>	   Move the cursor one character position to the left without
	   affecting the text.   If the cursor is 1 position beyond the
	   end of the text when this command is given, then  this command
	   erases the text as it backs up.

<char>	   Overwrite the character, at the cursor position with the typed
	   character <char>, where <char> can be any normal character.

αD	   Delete the character  at the cursor position,  moving the text
	   at the right of the deleted position by one character position
	   to the left to fill in the missing position.

	   Note that this command,  if given at the end of a line,  will
	   add the next line to the end of the current one,  but it will
	   do this only if the resulting line will contain less than 126
	   characters.

<meta><char>   Insert the character <char> at the cursor position, moving
	   the rest of the text over one character position to make room.

<cr>	   Finish editing the line and return control to E, that is, back
	   to the normal mode with the arrow moved to the next line.

   Remember that the  line corrections do  not appear in the  core image
and  E has no knowledge  of your line-editor corrections  until you have
typed an activation character, (of which the <cr> is the most common).

   Furthermore, even then a page is not recorded permanently in the disk
record until you  have switched pages or have issued  a specific request
for  it to be saved.  This has one  nice side effect in that if you have
made a grevious mistake  in editing a page  you can undo your  errors by
simply replacing the  present core copy by the one  that is still on the
disk.

   The command to undo a page of unwanted corrections is αβXCANCEL<cr> ,
where the "X" is typed with the <control> and (meta> keys while the word
CANCEL and the <cr> are typed without control keys.

   The command  to write out a page is αβ. , that is, the character  "."
(period) is typed with both control keys depressed.

   !!  To see how this all works, try  editing this paragraph, doing all
sorts of things to it and when you have messed it up most horribly, then
try the XCANCEL command.  The XCANCEL command may take a little time to
function so do not be impatient.

More editing commands.  Insertions and deletions.

INSERTIONS.

   There are two special modes that make editing  very much easier.  You
will need to know how to enter and how to leave these modes.

1) The LINE-INSERT mode is entered by the command αβ<cr> .

   Typing the  command αβ<cr> causes  E to  enter a special  LINE-INSERT
mode, signalled to the user by the appearance of the double arrow "↔" to
the left of a newly inserted blank line which will be inserted  ahead of
line to which the  single arrow had been pointing, or, if the command is
given  when one  is already in  the LINE-EDITOR  mode, the  line will be
split at the cursor position and the new blank  line will appear between
the two segments of the the former CURRENT line.

   When E is  in this mode, everything  that you type (again  except for
certain activation characters)  will simply be inserted into the text at
the position  marked  by the  double arrow  and  the cursor.    Carriage
returns will be accepted  as such and you can type as  much as you want,
for  all the world as if  you you were typing  on a typewriter, with the
added convience that the rest  of the text is always moved down  to make
room.  Most of the LINE-EDITOR commands are available to you and you may
move the  cursor around and  make corrections to  the line that  you are
typing as desired.

   To leave the LINE-INSERT mode, you must type one  of several possible
commands, the  simplest one being α<cr> .  This  causes you to leave the
mode with the cursor (now a  single arrow) pointing to the last line  of
your insertion.  The command <alt>  can also be used to leave this mode,
but it does different things depending upon the exact situation at the
time that it is given.	You might experiment with this a bit.

2) The INSERT mode is an even simplier affair.
   This is entered from the LINE-EDIT mode  by the command αI .

   Typing αI when in the  LINE-EDIT mode causes everything that you type
thereafter until  the  next  line-edit  command to  be  accepted  as  an
insertion, just as would otherwise be the case if  you were to hold down
the  <meta> key while you  were typing.   You may not  find this special
mode to be of much value, but  you need to know of its existance as  you
may enter it  by accident and you will  need to know what to  do if this
happens.

DELETIONS.

   It is almost as important to be able to  delete text as to create it,
as you  will find when you misinterpret  these instructions and make bad
mistakes.

   The command αβD ,if given  while in the normal mode,  causes the line
at  the  arrow to  be  deleted.    This  command  can  take an  argument
specifying the number of lines that are to be deleted, starting with the
current one, but take care, this is a very powerful command and  you can
easily delete more than you intend.

PAGING. Introducing and deleting PAGE MARKS.

Having added some text to a file you will want to break it up into pages,
and then occasionally you will want to combine two pages into one.

   The commands to  do these things  are similar to the  XCANCEL command
that you learned earlier in that they begin with the letter X typed with
control keys.  These are called EXTEND commands, so let's take  time out
to learn something about these commands.

   EXTEND commands.

   Since there are many  more commands in E than  there are letters,
   it  is  necessary  to  have  some  multi-letter commands.    Such
   commands are signalled by the letter "X" which is typed  with one
   or both  of the control  keys and then followed  immediately with
   the  letters that make  up the name, typed  without control keys,
   and which must  then be terminated by  a delimiter to signal  the
   end of the  name.  There is a further  complication , however, in
   that the  name may  be shortened as  long as  it does not  become
   ambiguous.

αβXM<cr>    The command  to introduce a  page mark is  αβXMARK<cr> which
can  be shortened  as  shown.   This  command is  given  with the  arrow
pointing to the line that is to be the first line on the new page.

   Actually there are two EXTEND commands  beginning with the letter
   M,  these being MARK  and MAIL,  so strictly speaking  one should
   have to  type  at  least  MAR  or MAI  to  disambiguate  the  two
   commands.   However,  since  the MARK  command  had already  been
   established  and use  by many  people in the  abbreviated, single
   letter, form, the convention was adopted that the single letter M
   is always taken to mean  MARK.  Curiously enough, MA is ambiguous
   and is not accepted by E.

αβXDEL<cr>   The command to join two pages, that is to DELETE a page-
mark, is αβXDELETE<cr>, which can be shortened as shown.  This command
is given when the first  of the two pages (or a portion of  it) is being
viewed.  The arrow need not be at any particular place on the page.

   It is  good practice to limit  the size of each  page to something of
the order of 150 lines  and to start each  page with a comment or  title
line that  defines the material  on the page.   As mentioned  earlier, E
keeps a  directory, usually on page 1, which contains the first lines of
all subsequent pages, and this directory may be used by you directly and
through some  search commands, to be  described later, to  help you find
things that you may want to refer to in the file.

File switching commands.  αβ?  αβH  αβε and αβλ

   One of  the first  things that  you will  want to do  after you  have
mastered  the basic elements of  editing will be to  switch from file to
file, both to read  or edit another file  and later to copy  information
from one file  into another.  E  has some special commands  to make this
easy to do.

   Perhaps  the very  first  file  you will  need  to  reference is  the
expanded  version of this TEACH manual which  is always available on the
system.  The two  commands that you will  need for this purpose  are αβ?
and αβH.

αβ?     This command switches  you to a special file E.ALS[UP,DOC].  The
first time that you give this command you will find that page 2 of  this
file is  displayed.   Page 2  lists information  as to  the most  recent
modifications  to the editor  E.  You  can, however switch  from page to
page, using  all of the  page and  window moving  commands as  required,
perhaps going to the  directory page (page 1) to find  out the number of
the  page  that  concerns  you  at the  moment.    After  you  have once
referenced this  file on subsequent  references (during any  one editing
session) you will be  returned to that page and line where you were when
you left this file.

   Incidentally, this method of  referencing the E manual causes  you to
enter the file in  what is called the READONLY mode.  You will find that
E will  not  let  change the  disk  copy  of  this file,  at  least  not
unintentionally.  Should you  try to do this, E will  ask you to confirm
the  desired mode.  You must  then type either READONLY  if it was all a
big mistake, or READWRITE, if you really want the changes to be made.

Please do not change the E manual.  If you find a mistake in it, let ALS
know.

αβH    This command  returns you to the  last file that you  were using.
So  if you give this  command while looking  at the manual  you will get
back to your former position in your  (H for HOME) file.  (The αβ?  file
is never considered to be the HOME file, however).

!!   By way of practice, try switching to the αβ? file,  locate the page
which first mentions αβ? and then return here using the αβH command. You
will later learn a much simplier way to find the desired page in a file
by using the FIND command described on page 14.

Switching to other files.

αβε and αβλ    It is also very easy to switch to any other file by using
one of these commands.  One simply types  <control><meta>ε , that is the
Greek  letter epsilon typed with  the two control keys,  followed by the
name of the file desired and a <cr>.  This opens the designated  file in
the so-called READ-WRITE mode, so that you  can edit the new file if you
so desire.   Should you wish  only to reference  this file, (and  not to
edit it) you can use the Greek letter lambda (λ for look) instead of the
Greek letter  epsilon (ε  for enter)  and  the  file will  be opened  in
READ-ONLY  mode.   It is  good practice  to always  use λ  instead of  ε
whenever  this  is  sufficient  and E  will  keep  you  from unwittingly
damaging a file.

   Certain switches  may  be used  with these  file switching  commands.
These are single letters,  either with an argument or  without, that are
typed after  the file name  and before the  terminating <cr>.   The fact
that they  are switches is signalled by starting  them with a slash (/),
and by typing them without control bits.  The more useful of these are:

/C	Create a new file with this name.
/26P	Open the file at the start of page 26.
/34E	Open the file at the end of page 34.
/E	Open the file at the end of its last page.
/4P/45L Open the file with the arrow pointing at line 45 on page 4.

   Note that these same switches may be used with  the ET command to the
system when entering E at the start of an editing session.   See page 18
for a more complete list of available switches.

   Once you have entered a  file, (during  any one editing  session)  E
keeps  a record  of the  file name and  your position  in this  file and
assigns a serial number  to this information.   You need then only  type
this number as  a preceding argument to either αβε  or αβλ ,without then
being  required to retype  the name of  the file.  You  must observe the
difference between these commands as typed without an argument, in which
case a  following file name must  be typed terminated by a  <cr> and the
case where an  argument is used in which  case the symbol αβε or  αβλ is
the command and in which a file name and the terminating <cr> are not to
be typed.  (As always the argument must be typed with control bits).

   Actually E  only keeps such records on the last 8 files that you have
referenced, but this is usually enough for any one editing session.

αβ∃    As a  mneumonic aid, E will show  you the numbers that  have been
assigned  and  the corresponding  file names.    To see  this,  type the
command αβ∃ , that is the  symbol ∃ (for "there exists") typed with  the
two control keys.  The desired information will appear on the 3 lines at
the  bottom of the  screen.  For  your last referenced  file, the serial
number in the listing will be replaced by the letter H.

Line marking.

   E provides the  facility for marking up  to 23 line locations  in any
one  file with a  rapid way  to return to  these locations by  using the
following commands.    These marks  are  preserved with  file  switching
during any one session and they  are still available when one returns to
a previously marked file.  They are also sticky with respect to the text
so  that they  stay  with the  speciific  text line  to  which they  are
assigned  even when  the line  numbers  are changed  by the  addition or
deletion of other lines ahead  of the marked lines.  When  a marked line
is deleted its assigned mark disappears.

   αβM	  Mark the CURRENT location,  recording  page number
	  and line number.

  αβ-αβM  Erase the MARK at CURRENT.

  αβ0αβM  Erase all marks in the current file.

   αM     Go to the next MARK (cyclicly).

   α2αM   Go the the second Mark from here.

  αβ-αM	  Go backward one mark (cyclicaly).

!!     This  might be a good  time to review, so  go back to page  2 and
skim through the file  putting marks on those lines  that you especially
want to remember.   When you  have done this,  then go through  the file
again by  using αM's to switch from one marked  line to another.  If you
feel that you would  like to know more about  some aspect you might  try
switching to the E.ALS[UP,DOC] file by typing ⊗? to see what it the more
complete  manual has  to say.   When  you switch  back, by using  the ⊗H
command, you will find that your marks are still available.
ATTACH and COPY.

   The ATTACH and COPY commands permit blocks of lines or copies of them
to be moved up and down on the page, from page to page  and from file to
file as desired.

   The  user is  reminded  of  the existance  of  an attachment  by  the
replacement  of the  usual cursor to  the left  with a vertical  bar "|"
which defines the extent of the attachment.   If the attachment contains
8 or fewer lines  they all show, otherwise only the first 4 and the last
3 lines are shown, separated by  a dotted line to signal some  omissions
from the screen (but of course, not from the attachment).

   Once an attachment has been effected, it can  be moved arround on the
page, from  page to page and from file by  all of the usual commands for
moving the normal arrow.   When  a final resting place has been  located
the command αβE causes the attachment to be released.  You will find the
MARK commands usefull for marking places to which you want to move text,
before you have attached the desired lines.  In this way you can get the
attachment moved to  the the desired location with the minimum of effort
and in the shortest possible time.

Basic commands.

  ⊗A     ATTACH the CURRENT line and mark it with a "|".
	 Note that the line has been removed from its original location
	 in the text although it is still shown on the screen.

  ⊗3⊗A   ATTACH 3 lines starting with CURRENT and mark these with "|'s".

  ⊗C     COPY the CURRENT line, attach the copy and mark it with a "|".
	 Note that in this case a copy has been made and the old line is 
	 still in its original place.

  ⊗4⊗A   COPY 4 lines starting with CURRENT, attach the copy  and mark
	 with "|'s".

  ⊗E     Deposit the attached lines where displayed and Exit ATTACH mode.
	 Note:   this command has a different meaning when one is NOT in
	 the ATTACH mode (it then means EXIT from E). Don't stutter when
	 typing it. Give the system time to react.

  αβK    KILL the attached lines (they go away beyond recall) and exit
	 from the ATTACH mode. Note that αK does not work (for safety).

   Relative arguments may also be used to add or subtract lines from the
end of an attachment.  See αβ? for more details.

   A word of warning, a  hazard is involved in moving lines from page to
page, and from file to file as the attachment  can be lost if the system
should crash during the interval between the attachment of the lines and
the final updating of the page to which they are moved.  This hazard can
be avoided  by copying  the lines  rather than  attaching them  and then
going  back and deleting the  original copy.   This precaution is hardly
necessary for  a few  lines of  text but it  is wise  when moving  large
blocks.

   This is a good place to comment on the  RIPPLING report, that you may
noticed  in the  scratch-pad lines  at  the bottom  of the  screen. This
notice appears when  a major rearrangement of  the text between  records
becomes necessary.

FIND commands are string searching commands.

   E  provides   facilities  for  searching   for  desired   strings  of
characters, either delimited, that is as separate words, or undelimited.
We will explain only the simplest form of such searches in  this manual.
As soon as you have mastered these, you  may want to refer to ⊗?  to get
the entire story.

Single page searches.

   Single  page FIND commands start searching  at the CURRENT line, that
is at the line marked by the arrow, and search forward toward the end of
the page.  When the desired string has been found, the arrow is moved to
line in question.  If the searched-for-string is not found, this fact is
reported and the arrow is left in its original position.

   The command αβFSmith<cr> searches for the word  "smith", that is, for
this as  a separate word, whether it is  spelled with an initial capital
or without, (but it nust be separated  from the rest of the text by  the
usual word delimiters, spaces, tabs, punctuation marks etc.).

   Note that no space is used between the F and the start of the string,
and that both  the control and the  meta keys ARE used with  the "F" but
control keys ARE NOT used with the characters of the string.

   If  you want to  find "smith"  even should it  be a part  of a longer
sequence of letters,  then you type αFsmith<cr>  , that is you  use only
the control key <control> with the letter "F".

Repeat searches.

   Having found the  first example of some desired  string, you can find
the next example of this same string  by the command αβ* , that is,  the
symbol "*"  typed  with both  control and  meta  keys.   Note that  this
command simply repeats your previous find  request, whether delimited or
not, and that the  control keys used with the repeat command do not have
the significance that they did for the original command.   Caution, this
command always repeats the last search command given,  whether it be the
the single page search that has been described or a multi-page search as
will be described below.

   One further complication before leaving  single page searches.  Using
a simple  carriage return, to signal the end of the searched-for-string,
leaves the cursor at  the beginning of the  line in which the  string is
found.  Often times  it is desirable to have  the beginning of the found
string marked as well, particularly if there are more than one occurance
of the searched-for-string in a single line.  To effect this, one merely
used the control key <control> with the carriage return.

αβFtheα<cr>    then  will find the next occurance  of the word "the" and
this will be signalled by the  cursor being left under the first  letter
of this word.

   Similarly using only the <control>  key with the repeat command, that
is,  typing <control>*  will  leave the  cursor under  the start  of the
string for repeat searches.

!!     Before going on it might be wise to practice these commands a few
times.

   !!  Move  the arrow to the  top of the  page and then search  for the
word "the".  Do  this several times both leaving the cursor at the start
of the line and leaving it under  the first letter of the string.   Note
that  one can  switch between  α* and  αβ* with  the wanted  results for
repeated FINDs.


Multi-page searches.

   Multipage searches are a bit more complicated in that you have to use
an EXTEND command.

   At the present time there is  but one command beginning with  the
   letter "F" so only the "F" needs to  be typed.  Never-the-less we
   must separate this letter from the string that follows by a space
   to prevent the string from being  taken as a part of the  command
   name.

The multipage search commands then are of the form:

αβXF Smith<cr>  Find a  delimited string "smith".
αXF Smith<cr>  Find the string regardless of surroundings.

   Note that CONTROL and  META keys are not used  with the F and  that a
space is required between the F and the string which is typed without
control keys.

   As before one  may use the <control> key  with the <cr> to  cause the
cursor to be positioned under the first character of the found string.

   The command  ⊗* repeats the  last find request,  be it a  single page
search  or a  multi-page search.

   Multi-page searches may take some time for large files.  You are kept
informed as  to the progress of  the search by a  running display of the
number of the page that  is being searched, This information appears  to
the right on the header line.

   You may  interrupt a multi-page  search at  any time by  typing <esc>
followed by  the letter "I".  The search will continue to the end of the
page it is on and then terminate.

Directory searches.

   One final  form of search  is so useful  that it should  be described
here.  This command makes a search on the directory page (which contains
the first lines from all pages in the file) but then the referenced page
is displayed and the cursor is  positioned either at the first occurance
of the searched-for-string (which, of course, will be on the first line)
or at the second occurance of  this string.  One need not be  looking at
the directory to give this command.

The proper final character for these two forms of directory search are:

αP   Make the search over the directory page and then display
     the referenced page with the line pointer at the top line.

αβP  Make the search over the directory page and then display
     the referenced page with the line pointer at the second
     occurance of the referenced string (the first will be in
     the first line of the page).

Finding the Nth occurance.

The search can be for the first  occurance of the specified string
or for the n'th occurance.

   ⊗3⊗Fsmith<cr> Finds the 3rd occurance of SMITH.

If one only wants to know how many examples of the searched-for-string
there are in the document then one asks for an impossibly large number
and the search will be terminated without finding  the specified
occurance.  However, and this is cute, E obligingly reports the number
that it did find.  The symbol "∞" may be used.

Substitution commands.

   One frquently wishes to find all of the  occurances of some string in
order  to change them to  something else, perhaps you  have misspelled a
name or you wish to rename some variable used in a program.

   Substitution commands begin as any normal  search command except that
one  uses, as  a special  termination  for the  searched-for-string, the
symbol "\" , that is a  backslash which must be typed with both  control
keys  thus  <control><meta>\   and  then  one  follows   this  with  the
substitution string terminated by either a <cr> or a <control><cr> .

   The usual  conventions apply  to  the searched-for-string,  that  is,
capitalization is ignored but  the substitution string is made  with due
attention to  the case of the letters.   The searched-for-string itself,
(and not its  delimiters if  it is  a delimited search)  is removed  and
replaced by the substitution string,  which, of course, need not contain
the same number of characters.

   A  substitution may be made  for the first occurance  only or for any
specified number.  A repeat command is available and it is good practice
to always make a single substitution first just to make sure that one is
making the desired substitution  and then to use  the repeat command  to
make the rest of the desired substitutions.

   The repeat command is <control><meta>\ .  This can be preceeded by an
argument (typed with  control keys) and the symbol "∞" (infinity) may be
used.  The αβ\ acts  as the command and no  further delimiter is used.

Margin control. JUST,JFILL and CENTER.

   The JUST  AND JFILL commands are useful for  doing left-margin,and/or
right  margin justification.  The  first line of each  new paragraph may
also be  indented with  respect to  the body  of the  paragraph.   These
commands  apply to the  ATTACH buffer when  they are given  while in the
ATTACH mode. They may be limited to a specified  number of lines or they
can apply (by default) to the entire ATTACH buffer or to the entire page.

    These commands take  two different types  of arguments,  an  initial
argument which  specifies the  number of  lines to be  handled,   and  a
following string  of numbers separated by commas to define the paragraph
indentation, the left margin, and the right margin.  Any or all of these
arguments may be omitted, if commas are used to denote omitted values in
the margin specifying string.

    The default option as to the number of lines is the full page or the
full ATTACH  buffer for the JUST  AND JFILL commands and  it is one line
for  the  CENTER  command.    The  default  options  as  to  the  margin
specifications are  originally set to  1,1,69 for paragraph  first line,
normal left  margin and right margin.  The margin default values for the
margins may be changed by "sticky" commands, as noted below. 

    JUST and JFILL recognize the first line of a paragraph either by the
fact that  the line is preceded by  a blank line or by  the fact that it
begins with a TAB (but not both).  If a TAB is used this takes precedent
over the  specified indentation, which is  used after a blank  line.  At
present  E gets confused  when it encounters  a beginning TAB  in a line
following a blank line and does  the wrong thing in that the TAB  is not
properly allowed for and the first line may not be of the proper length. 
If this happens a repeat  of the JUST or  JFILL command will delete  the
TAB and restore the line to the desired length. 

    The first line of the total text is never treated as a first line of
a paragraph. This  restriction is actually rather arbitrary and could be
changed.  It was adopted because it seems unwise to indent page headings
and one  frequently wants  to fix  up the  end of  a paragraph  with out
having  to rejustify  the entire  paragraph. One  can always  indent the
first  line of  a  new  paragraph when  a  limited  number of  lines  is
specified  by  starting the  justification  with  the  blank line  which
precedes the block. 

   The CENTER command differs  from the JUST and JFILL  commands in that
no filling  is done and in that the default  argument is one line rather
than the  entire page except  when in  the ATTACH  mode when  it is  the
entire ATTACH buffer.  It is similar  to these other commands in its use
of  the same left  and right margin  values and in its  following of the
same conventions  for the specifications  of these  margins.  Should  an
attempt be  made to  center a line  that is too  long to fit  within the
specified margins, the line is simply pushed as far left as possible.

   Margin specifications:
   
   Margin specifications may be made applicable to only a single command
with the default value unchanged, by using the  CONTROL key only, before
the X, or they may be made to alter the default values as well, by using
both the CONTROL and META keys.

   The  complete  specification  is   in  the  form  <first  line>,<left
margin>,<right margin>  However, any combination af these numbers may be
omitted  as long  as  the  necessary  commas to  prevent  ambiguity  are
included.

   To change  the paragraph indentation  alone, it is  only necessary to
type a single decimal number (of not  more than 3 digits) to specify  an
absolute position. If the number is preceded by a  plus or minus sign it
then specifies  a relative first line indentation  from the current left
margin value. A  subsequent modification to the  left margin will  alter
the paragraph indent  value so as to maintain the  same indentation from
the body of paragraph.

   To change the left  margin specification alone, it is  only necessary
to type a comma followed by the desired decimal value.  In this case the
paragraph indentation remains fixed, rather than its absolute value.  Of
course if  the paragraph margin value  is specified in the  same command
string  then this value will not  be altered, the absolute specification
in this case will over-ride the usual rule.

   To change  the right  margin alone, it  is necessary  to precede  the
decimal number by two commas.

   Typical command strings.

   ⊗XJUST<cr>	Justify the current page  (or the ATTACH buffer if in
		ATTACH mode) using the default values for the initial
		line left, regular left and right margins.
		Margins are initially set to 1,1,69.

   αXJUST +3,4,66<cr>   Justify the current page or the ATTACH buffer
		using temporary margins as specified (in this example
		to 7, 4 and to 66 respectively).

   αβXJUST ,4,66<cr>    Justify the current page or the ATTACH buffer
		using new sticky margins as specified.      These new
		values now become the default values.   The paragraph
		indentation will be left at the previously  specified
		value.

   ⊗13⊗XJUST<cr>	Justify 13 lines starting with CURRENT.   May
		be combined with margin specifications,  which may be
		may be made sticky or temporary as desired.

   ⊗XJFILL<cr>	Redistribute text between lines as if to justify, but
		but do not pad lines out with blanks. (see ⊗XJUST<cr>
		above for conditions).

   ⊗XCENTER<cr> Center the CURRENT line or first line,if in the ATTACH
		mode,  between the default values for the regular left
		and right margins.

   ⊗4A⊗XCENTER<cr>	Attach 4 lines and Center the first line only.
   ⊗4A⊗3⊗XCENTER<cr>	Attach 4 lines and Center the first three lines.

Some other EXTEND commands.

   You have,  by now, encountered  several EXTEND  commands.  There  are
several other EXTEND commands that you will want to know about very soon
but you will have to refer to ⊗? for full details.  For completeness, we
will review the way that these commands are written and list some of the
more useful EXTEND commands.
   
   Certain commands are potentially too dangerous to be safely evoked by
a single  character. There are also more  commands than can  be obtained
with single characters.  These contingencies are  handled by the  EXTEND
command specified as follows:

   ⊗X     Accept the string which follows as a command. This
	  string may be abbreviated  as long as no ambiguity
	  results.  The string is typed without control keys
	  and it must be terminated by a space if parameters 
	  are required,  or  by a <cr> or other deliniter.

The more useful EXTEND commands are:

   ⊗XBREAK<cr>	Break a long line into two or into more segments as
		defined by a value that may be changed but that is
		initially set to 80.  This command will accept lines
		of any length and does not require them to contain
		cr's.  See ⊗? page 12 for details.

   ⊗XCANCEL<cr> Do not write out the current page but instead 
		reread it in from the disk.

   ⊗XCLOSE<cr>	Close the file.  This allows others to read it
		if you had modified it, without interfering with
		your ability to still read it.  You may, however,
		be prevented from making further modifications should
		someone else start to read the file.

   ⊗XDEFINE<cr>	Define a macro-command which can then be executed any
		desired number of times by a simple (⊗#⊗Y) command.
		See page 24 in ⊗? for detailes.

   ⊗XDELETE<cr> See page 10 for details.

   ⊗XDRAW<cr>	Redraw the complete screen.  Used when unwanted
		marks show on the screen from whatever cause.
		(This does the same thing as ⊗V).

   ⊗XFIND	see page 14 for details on FIND.

   ⊗XGO<cr>	Exit from E and repeat the last SNAIL command.

   ⊗XJOIN<cr>	Join as many lines as specified by an initial argument
		into one line, regardless of its resulting length.  The
		default argument is 2.  See ⊗? page 12 for details.

   ⊗XJUST<cr>	See page 16 for details.

   *XLINCNT<cr>	Report the number of characters in the current line, and
		the number of characters on the entire page.

   ⊗XMAIL<cr>	Send mail to the designated person. See ⊗? for details.

   ⊗XMARK<cr>   See page 10 for details.

   ⊗XPAREN<cr>	A Parenthesis matching command. See ⊗? page 21 for details.

   ⊗XPROTECT<cr>  Display or change the PROTECTION for the file being
		viewed.  See ⊗? page 18 for details.

   ⊗XQUIT<cr>	Quit (exit) E WITHOUT updating the disk record.

   ⊗XREADONLY<cr>  Inhibit any commands that will cause the file to be 
		written out and ask for confirmation of desired mode
		before proceeding.

   ⊗XREADWRITE<cr> Disable the write-inhibit.

   ⊗XREMIND<cr>	Send reminder.  See ⊗? for details.

   ⊗XSEND<cr>	Send message.  See ⊗? for details.

   ⊗XRSYS PRGM<cr>	Exit and runs SYS:PRGM

   ⊗XRUN PRGM<cr>	Exit and runs DSK:PRGM

   ⊗XSPOOL<cr>	Spool the page that is being displayed, or the attach buffer
		only if something is attached.

   ⊗XXSPOOL<cr>	XGP spool the page that is being displayed, or the attach
		buffer if something is attached.

System commands to evoke E.

   Basic commands

	CETV <string><cr>
		Create a new file with the name and extension as
 		  specified by string.
		  The file will contain a directory page and one
		  blank page.
	ETV <existing file name><cr>
		Enter E with the specified file. If the file has
		  but one text page, display this, otherwise
		  display the directory page.
	ETV	Reenter E with the most recently edited file and
		  display the most recently opened page (subject
		  to certain restrictions as described in the
		  Monitor Manual).	
	ETV <string1>←<string2><cr>
		Copy file named string2 into a new file named
		  string1, start E and display the text as above.
		  If the string2 file has a valid directory this
		  is executed relatively rapidly, if not a new
		  directory will have to be created. (See the note
		  below with respect to the /N switch).

	R E;<string1>←<string2><cr>
		Similar to ETV  <string1>←<string2> except for the
		  way it handles the TMPCOR files. (See the Monitor
		  Manual for this and other RPG features).

   Switches, when used, are strings beginning with a slash which are
placed immediately after the file name that they are to modify.

	/E	Open the file with the arrow pointing to the asterisks
		  on the last page of the file (in the position to add text).
	/6E	Open the file with the arrow pointing to the asterisks
		  at the end of page 6.
	/F	Repage the file as it is being read in, limiting the number
		  of lines on a page to a maximum of 33 (1 windowful).
		  Existing page marks are respected.
	/62F	Repage the file as before but with the maximum number of
		  lines set at 62 instead of the default value of 33.
	/5L	Open the file with the arrow at line 5.
		  This is not very useful by itself but see below.
	/N	No Directory. The inexperienced user is advised to avoid
		  using this switch as there are some commands that cause
		  trouble when used with no-directory files.
	/2P	Open the file displaying page 2.
	/R	Open the file in the read only mode. This is useful
 		  if one wants to examine a file without any danger
		  of inadvertently modifying it.
		    example: ET TEACH[UP,DOC]/R<cr>

   When two or more switches are to be used they may be put together
inside parenthesis.

		example: ET MYFILE(R4P5L)<cr>

Credits:

   Dan Swinehart wrote TV,  the original version of the  display editor,
and created  the original version of TEACH.   Fred Wright wrote the FAIL
version of TV (called E).   This has been extended and modified by  many
different  people,  with major  contributions  by  Arthur Samuel,  Brian
Harvey, and Martin Frost.

   Suggestions as  to ways to  improve this version  of TEACH  should be
sent to Samuel.

   Disclaimer.

   An attempt has been made to present a coordinated view of E.  To this
end some simplications have  been made. The experienced user may develop
techniques that are not  described in this  manual. Any outright  errors
should, however, be called to our attention.